iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
Software Development

從零開始學 Python系列 第 17

Day 17 – try / except 例外處理:讓程式更穩健

  • 分享至 

  • xImage
  •  

今天的學習重點

  • 什麼是「例外」(Exception)
  • try / except 的基本語法
  • finally 與 else 的使用情境
  • exercise:防呆輸入

一、什麼是例外?

當程式執行過程中發生「非預期錯誤」時,Python 會丟出例外(Exception)
如果沒有處理,程式會中斷執行,這在真實應用裡很危險
常見錯誤:

  • ZeroDivisionError(除以零)
  • ValueError(型別不正確,例如輸入字串卻想轉數字)
  • IndexError(索引超出範圍)

二、基本語法

try:
    # 嘗試執行的程式碼
    x = int(input("enter a number:"))
    print(10 / x)
except ValueError:
    print("The input is not a number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

螢幕擷取畫面 2025-08-19 103439

三、finally 與 else

finally:一定會執行
常用來做「收尾動作」(像是關檔案、釋放資源)

try:
    f = open("data.txt", "r")
    print(f.read())
except FileNotFoundError:
    print("找不到檔案!")
finally:
    print("程式結束,檔案關閉(模擬)")

螢幕擷取畫面 2025-08-19 103745

else:當 try 沒有錯誤時才會執行

try:
    num = int(input("輸入數字:"))
except:
    print("輸入錯誤!")
else:
    print("你輸入的是:", num)

螢幕擷取畫面 2025-08-19 103913

四、exercise:防呆輸入

while True:
    try:
        age = int(input("請輸入年齡:"))
        if age < 0:
            raise ValueError("年齡不能是負數")
        print("你的年齡是:", age)
        break  
    except ValueError as e:
        print("錯誤:", e)

測試:

  • 輸入 abc → 「錯誤:invalid literal for int() with base 10...」
  • 輸入 -3 → 「錯誤:年齡不能是負數」
  • 輸入 20 → 「你的年齡是:20」
    螢幕擷取畫面 2025-08-19 104314

學習心得

今天在學習 try/except 例外處理時,突然發現 Python 在 break 或一般程式結尾時都不加分號。這讓程式碼更簡潔,但我反而有一點不習慣。
因為在 Java 裡,每一行敘述必須以分號結尾。他有一種「這個段落結束了!」的感覺,能讓程式碼的結構在視覺上更明確。Python 感覺少了一點結尾的儀式感!
明天要進入 檔案讀寫(with open) 的主題!學會如何讀取與寫入文字檔案,讓程式能和外部世界互動,記錄資料或載入設定!


上一篇
Day 16 – 字串搜尋與迴圈練習:統計與找字串
下一篇
Day 18 – with open: 讀寫檔案
系列文
從零開始學 Python30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言